//扩展jQuery对json字符串的转换 
/*
var obj = { 
   name: "sean", 
   friend: ["fans", "bruce", "wawa"], 
   action: function() { 
     alert("gogogog") 
   }, 
   boy: true, 
   age: 26, 
   reg: /\b([a-z]+) \1\b/gi, 
   child: { 
     name: "none", 
     age: -1 
   } 
}; 
var json = $.toJSON(obj); 
var objx = $.evalJSON(json); 
*/
jQuery.extend({ 
   /** * @see 将json字符串转换为对象 * @param json字符串 * @return 返回object,array,string等对象 */ 
   evalJSON: function(strJson) { 
     return eval("(" + strJson + ")"); 
   } 
}); 
jQuery.extend({ 
   /** * @see 将javascript数据类型转换为json字符串 * @param 待转换对象,支持object,array,string,function,number,boolean,regexp * @return 返回json字符串 */ 
   toJSON: function(object) { 
     var type = typeof object; 
     if ('object' == type) { 
       if (Array == object.constructor) type = 'array'; 
       else if (RegExp == object.constructor) type = 'regexp'; 
       else type = 'object'; 
     } 
     switch (type) { 
     case 'undefined': 
     case 'unknown': 
       return; 
       break; 
     case 'function': 
     case 'boolean': 
     case 'regexp': 
       return object.toString(); 
       break; 
     case 'number': 
       return isFinite(object) ? object.toString() : 'null'; 
       break; 
     case 'string': 
       return '"' + object.replace(/(\\|\")/g, "\\$1").replace(/\n|\r|\t/g, function() { 
         var a = arguments[0]; 
         return (a == '\n') ? '\\n': (a == '\r') ? '\\r': (a == '\t') ? '\\t': "" 
       }) + '"'; 
       break; 
     case 'object': 
       if (object === null) return 'null'; 
       var results = []; 
       for (var property in object) { 
         var value = jQuery.toJSON(object[property]); 
         if (value !== undefined) results.push(jQuery.toJSON(property) + ':' + value); 
       } 
       return '{' + results.join(',') + '}'; 
       break; 
     case 'array': 
       var results = []; 
       for (var i = 0; i < object.length; i++) { 
         var value = jQuery.toJSON(object[i]); 
         if (value !== undefined) results.push(value); 
       } 
       return '[' + results.join(',') + ']'; 
       break; 
     } 
   } 
});

